home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / misc / math / lifemake.cpt / LifeMaker Demo.rsrc / LIF3_9614_Gas < prev    next >
Encoding:
Text File  |  1991-07-16  |  1.1 KB  |  35 lines

  1. RULE Gas
  2.    VAR 
  3.       collision,      (* TRUE if two particles have collided *)
  4.       wall,           (* number of walls in the block *)
  5.       new             (* new value for cell *)
  6. BEGIN
  7.    IF cell[1] THEN                       (* check for wall *)
  8.       new := cell                        (* if wall nothing changes *)
  9.    ELSE
  10.       collision := (cell[0] = opp[0]) AND (cw[0] = ccw[0])
  11.       wall := cw[1] + ccw[1] + opp[1]
  12.       IF (wall = 1) OR (wall = 3) THEN   (* bounce straight back *)
  13.          IF opp[1] THEN
  14.             new := cell
  15.          ELSE
  16.             new := opp[0]
  17.          END
  18.       ELSIF wall = 2 THEN               
  19.          IF opp[1] THEN                  (* bounce off wall *)
  20.             IF ccw[1] THEN                 
  21.                new := cw[0]
  22.             ELSE
  23.                new := ccw[0]
  24.             END
  25.          ELSE                            (* slide thru gap *)
  26.             new := opp[0]
  27.          END
  28.       ELSIF collision THEN               (* bounce off particle *)
  29.          new := cw[0]
  30.       ELSE
  31.          new := opp[0]                   (* travel in a straight path *)
  32.       END
  33.    END
  34.    RETURN new
  35. END